//
//  main.m
//  02-ClassAndObject
//
//  Created by dllo on 16/7/5.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Fraction.h"
int main(int argc, const char * argv[]) {
   //1.快捷键
    //command + 0 开／收起左边栏
    //command + option + 0  开／收起右边栏
    // command + shift + Y 开／收起下变栏
    // command + R  运行
    // command + B 编译
    // command + Z 撤销
    // command +  shift + Z 反撤销
    // command + C 复制
    // command + V 粘贴
    //2.移动光标
    // command + ⬅️ 移动到当前行的最左边
    // command + ➡️ 移动到当前行的最右边
    // command + ⬆️ 移动到当前行的最上边
    // command + ⬇️ 移动到当前行的最下边
    
    // 3.选中文字
    
    // shift + ⬅️ 选中向左一个字
    // shift + ➡️ 选中向右一个字
    // shift + ⬆️ 从当前光标位置开始，选中向上一行
    // shift + ⬇️ 从当前光标位置开始，选中向下一行
    
    
     // command + shift + ⬅️ 选中从光标开始，左边所有的文件
    // command + shift + ➡️ 选中从光标开始，右边所有的文件
    
    // command + shift + ⬆️  选中从光标开始，上边所有的文字
    //command + shift + ⬇️  选中从光标开始，下边所有的文字
    
    
    // 创建新文件夹
    // command + N
    //  创建
    
    
    
    
    // 1.类和对象
    // 类： 一个具有相同特征和行为事物抽象集合
    // 对象：类的实例，也称作类的实现
    // 面向对象的思想，万物都是对象
    // 面向对象语言是面向对象思想的具体表现
    
    // OOP 面向对象编程
    // OOD 面向对象设计
    //面向对象的三大特征：继承  封装  多态  提高代码的复用
    
    // 2.Objective-C (OC)
    
    // 与C语言的区别：OC属于C语言的拓展  OC有类的概念 OC中声明属性和方法在.h 中    .mm C+的文件（在这个文件里可以编写C++代码
    
    // OC的根类 NSObject
    
    //3.创建OC的实例
    // 1> 消息语法［objc doSomething］
    // 向objc 对象发送一个doSomething的方法，让他去调用
    //类的方法的调用  （由类名去调用其＋方法）
    // 开辟内存空间 alloc
    
    // 实例方法调用
    // init
    Person *p = [[Person alloc]init];
    p->_name = @"Tom";
    p->_age = 10;
    NSLog(@"%@",p->_name);
    [p sleep:1];
    
    //id与instancetype
    //instancetype 在作为参数的返回值的时候与id是一样的，系统编译器会把id类型转化成instancetype（即当前对象类型）
    // id 可以作为变量类型去使用，但instancetype不可以
    //id object = [[NSObject alloc]init];
    
    Fraction *f = [Fraction fractionWithNum:2 demo:3];
    Fraction *f1 = [Fraction fractionWithNum:1 demo:2];
    // 比较大小
    [f compareFraction:f1];
    // 约分
    Fraction *f2 = [Fraction fractionWithNum:3 demo:6];
    [f2 reduce];
    NSLog(@"约分：%ld / %ld",f2.numerator,f2.denorminator);
    //和
    Fraction *f3 = [f addFraction:f1];
    NSLog(@"和：%ld / %ld",f3.numerator,f3.denorminator);
    //减法
    Fraction *f4 = [f minusFraction:f1];
    NSLog(@"差：%ld / %ld",f4.numerator,f4.denorminator);
    
    // 乘
    Fraction *f5 = [f mulFraction:f1];
    [f5 reduce];
    NSLog(@"积：%ld / %ld",f5.numerator,f5.denorminator);
    
    // 除法
    
    Fraction *f6 = [f divisionFraction:f1];
    NSLog(@"商：%ld / %ld",f6.numerator,f6.denorminator);
    
    
    
    
    return 0;
}
